﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;

public partial class RegistroPresupuestal : System.Web.UI.Page
{
    #region strFrpId
    public string strFrpId
    {
        get
        {
            if (ViewState["strFrpId"] != null)
                return ViewState["strFrpId"].ToString();
            return "";
        }
        set { ViewState["strFrpId"] = value; }
    }
    #endregion

    #region TraerContextItems
    private void TraerContextItems()
    {
        if (Context != null)
        {

            if (Context.Items["StrFprId"] != null)
                strFrpId = Context.Items["StrFprId"].ToString();
        }
    }
    #endregion

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            TraerContextItems();
            cargarCDPs();
            cargarTipoMoneda();
            cargarEstados();

            if (strFrpId != "")
            {
                cargarCampos();

            }
        }

    }

    private void cargarCDPs()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.FIN_CDPs 
                        join  b in contexto.FIN_ACCION_EP_CDPs on a.FCD_ID equals b.FCD_ID
                        //where object.Equals(a.ZON_PADRE_ID, null)
                        select a;
            if (datos == null) return;
            cbCDPs.DataSource = datos;
            cbCDPs.TextField = "FCD_NUMERO_CDP";
            cbCDPs.ValueField = "FCD_ID";
            cbCDPs.DataBind();
            cbCDPs.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("", ""));
        }
        catch (Exception)
        {

            throw;
        }

    }

    private void cargarEstados()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.FIN_ESTADOS_RPs
                        //where object.Equals(a.ZON_PADRE_ID, null)
                        select a;
            if (datos == null) return;
            cbEstadoRegistroPresupuestal.DataSource = datos;
            cbEstadoRegistroPresupuestal.TextField = "FER_NOMBRE";
            cbEstadoRegistroPresupuestal.ValueField = "FER_ID";
            cbEstadoRegistroPresupuestal.DataBind();
            cbEstadoRegistroPresupuestal.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("", ""));
        }
        catch (Exception)
        {

            throw;
        }

    }

    private void cargarTipoMoneda()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.FIN_TIPO_MONEDAs
                        //where object.Equals(a.ZON_PADRE_ID, null)
                        select a;
            if (datos == null) return;
            cbTipoMoneda.DataSource = datos;
            cbTipoMoneda.TextField = "FTM_NOMBRE_MONEDA";
            cbTipoMoneda.ValueField = "FTM_ID";
            cbTipoMoneda.DataBind();
            cbTipoMoneda.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("", ""));
        }
        catch (Exception)
        {

            throw;
        }

    }

    private void cargarCampos()
    {
        try
        {
            string strNumeroCDP = "";
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.FIN_REGISTRO_PRESUPUESTALs
                        where a.FRP_ID == Convert.ToDecimal(strFrpId)
                        select a;
            foreach (var v in datos)
            {
                cbCDPs.Value = v.FCD_ID.ToString();

                var datosCDP = from a in contexto.FIN_CDPs
                               where a.FCD_ID == Convert.ToDecimal(cbCDPs.Value.ToString())
                               select a;

                foreach (var j in datosCDP)
                {
                    txtFechaEmisionCDP.Text = j.FCD_FECHA_CDP.ToString();
                    txtValorCDP.Text = j.FCD_VALOR_CDP.ToString();
                    txtFechaEmisionCDP.Text = j.FCD_FECHA_CDP.ToString();
                    strNumeroCDP = j.FCD_NUMERO_CDP;
                }


                txtNumeroRegistroPresupuestal.Text = v.FRP_NUMERO_REGISTRO_PRESUPUESTAL.ToString();
                cbEstadoRegistroPresupuestal.Value = v.FER_ID.ToString();
                txtFechaRegistro.Text = v.FRP_FECHA_REGISTRO_PRESUPUESTAL.ToString();
                cbTipoMoneda.Value = v.FTM_ID.ToString();

                //VALOR INICIAL CONFORME AL VALOR DEL CONTRATO
                //TEMPORALMENTE LO EXTRAR EL VALOR DEL EP POR QUE LA CONSULTA SE MULTIPLICA AL CRUZARLO ON EL CONTRATO
                var datosContrato = from c in contexto.FIN_ACCION_EP_CDPs
                                    join t in contexto.FIN_ACCION_EPEs on c.FAE_ID equals t.FAE_ID
                                    where c.FCD_ID == v.FCD_ID
                                    select new
                                    {
                                        t.FAE_VALOR_EPE
                                    };
                foreach (var z in datosContrato)
                {
                    txtValorInicialContrato.Text = z.FAE_VALOR_EPE.ToString();
                    txtValorFinalContrato.Text = z.FAE_VALOR_EPE.ToString();
                }



            }
        }
        catch (Exception)
        {

            throw;
        }
    }

    protected void cbCDPs_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            if (!String.IsNullOrEmpty(cbCDPs.Value.ToString()))
            {
                Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
                var datos = from a in contexto.FIN_CDPs
                            where a.FCD_ID == Convert.ToDecimal(cbCDPs.Value.ToString())
                            select a;

                foreach (var v in datos)
                {
                    txtFechaEmisionCDP.Text = v.FCD_FECHA_CDP.ToString();
                    txtValorCDP.Text = v.FCD_VALOR_CDP.ToString();
                    txtValorInicialContrato.Text = v.FCD_VALOR_CDP.ToString();
                    txtValorFinalContrato.Text = v.FCD_VALOR_CDP.ToString();
                }
            }


        }
        catch (Exception)
        {

            throw;
        }
    }

    protected void cbTipoMoneda_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    protected void btnRegresar_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            Server.Transfer("RegistroPresupuestalListado.aspx?SSM_ID=42", true);
        }
        catch (Exception ex)
        {

            string strAlgo = ex.Message.ToString();
        }
    }

    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            if (strFrpId == "")
            {
                Model.FIN_REGISTRO_PRESUPUESTAL v = new Model.FIN_REGISTRO_PRESUPUESTAL();
                v.FRP_NUMERO_REGISTRO_PRESUPUESTAL = txtNumeroRegistroPresupuestal.Text;
                v.FRP_FECHA_REGISTRO_PRESUPUESTAL = DateTime.Now;
                v.FER_ID = Convert.ToDecimal(cbEstadoRegistroPresupuestal.Value);
                txtValorInicialContrato.Text = txtValorCDP.Text;
                txtValorFinalContrato.Text = txtValorInicialContrato.Text;
                v.FRP_VALOR_FINAL_ADICION_CONTRATO = Convert.ToDecimal(txtValorFinalContrato.Text);
                v.FRP_TERCERO = "";
                v.FCD_ID = Convert.ToDecimal(cbCDPs.Value);
                v.FRP_NOMBRE = "";
                v.FTM_ID = Convert.ToDecimal(cbTipoMoneda.Value);

                contexto.FIN_REGISTRO_PRESUPUESTALs.InsertOnSubmit(v);
                contexto.SubmitChanges();
                strFrpId = v.FRP_ID.ToString();
            }
            else
            {
                var datos = (from a in contexto.FIN_REGISTRO_PRESUPUESTALs
                             where a.FRP_ID == Convert.ToDecimal(strFrpId)
                             select a
                                 );
                foreach (var v in datos)
                {
                    v.FRP_NUMERO_REGISTRO_PRESUPUESTAL = txtNumeroRegistroPresupuestal.Text;
                    v.FRP_FECHA_REGISTRO_PRESUPUESTAL = DateTime.Now;
                    v.FER_ID = Convert.ToDecimal(cbEstadoRegistroPresupuestal.Value);
                    v.FRP_VALOR_FINAL_ADICION_CONTRATO = Convert.ToDecimal(txtValorFinalContrato.Text);
                    v.FRP_TERCERO = "";
                    v.FCD_ID = Convert.ToDecimal(cbCDPs.Value);
                    v.FRP_NOMBRE = "";
                    v.FTM_ID = Convert.ToDecimal(cbTipoMoneda.Value); 
                }
                contexto.SubmitChanges();
            }

            
            txtFechaRegistro.Text = DateTime.Now.ToString();
            msgBox1.alert("La Información se Guardo Exitosamente!!");
        }
        catch (Exception)
        {

            throw;
        }
    }
    protected void txtValorCDP_TextChanged(object sender, EventArgs e)
    {

    }
}